const express=require('express');
const app=express();
//加载http模块，使用express构建http服务
const http=require('http').createServer(app);
// 基于http对象构建websocreateSocket.io实例
const socketio=require('socket.io')(http);


let count=0;//总人数
//on含义：监听connection事件，如果客户端连接过来，将会触发事件
// 执行箭头函数 传入client对象封装客户端信息
//监听客户端的连接请求
// 一旦有websocket连接过来，则执行箭头函数
socketio.on('connection',(client)=>{
    console.log(client.id);
    //当前在线总人数+1
    count++;
    //通知所有客户端人数更新
    socketio.emit('countChanged',count);

    //监听断开连接
    client.on('disconnect',(err)=>{
        count--;
        socketio.emit('countChanged',count);
    })

    client.on('textmsg',(msg)=>{
        console.log(client.id+":"+msg);
        //接收到客户端消息后，给所有客户端发一遍
        socketio.emit('textmsg',msg);
       
    })
})



//设置静态托管目录:public这样客户端可以直接访问public下
// 发送请求：http:localhost:3000/indexed.html
// express将会在public下寻找index.html,有则返回
app.use(express.static(__dirname+"/public"))

http.listen(4000,()=>{
    console.log('Server Running...')
})